Card Lifecycle

Overview

To request a card, follow these steps:

  1. Obtain the card product ID from a company offering issuer processing services. Currently, only the card product from Thredd is supported on the IF platform.
  2. Create an active client.
  3. Create the user who will serve as the cardholder.

Card Types

On the IF platform, you have the option to create two distinct types of cards:

  • Virtual Cards: These cards are in an active status upon creation.
  • Physical Cards: These cards start in an inactive status when initially created.

Card Statuses

  • Pending: Initial state, the card is not issued yet
  • Declined: The service provider has declined the creation of the card with the provided parameters
  • Inactive: This status is applicable only to physical cards. Card issuing is completed, and the masked PAN and expiration date are available. The card remains inactive for transactions until the card is activated by the cardholder.
  • Active: The card is enabled for transactions. Virtual cards are automatically activated upon completion of the issuing process.
  • Suspended: The card is disabled for transactions temporarily. This status should be used when an IF customer the cardholder decides to suspend a card. Suspended cards must have a reason of suspension specified:
    • User Requested reason means the cardholder asked for a temporary inactivation of the card.
    • Suspected Fraud reason means IF customer suspended the card temporarily.
    • Suspended by Third Party reason means IF received a message from underlying service provider stating that card is suspended for any reason. Details of this can be checked using "Service Provider Information" tab of the card in IF Backoffice.
  • Terminated: The card is disabled for transactions permanently and cannot be reverted back to an active status. Terminated cards must have a reason of termination specified:
    • Lost Card reason means the cardholder asked for a termination because the card is lost.
    • Stolen Card reason means the cardholder asked for a termination because the card is stolen.
    • Expired Card reason means the card is terminated because it's expired.
    • Termination Requested reason means the cardholder asked for a permanent termination of the card.
    • Terminated by Third Party reason means IF received a message from underlying service provider stating that card is terminated for any reason. Details of this can be checked using "Service Provider Information" tab of the card in IF Backoffice.

Linked Accounts

To facilitate transactions with the card, it needs to be linked to specific account(s), which must be set up by the customer. These accounts will serve as the card balance. Customers can choose to link at least one or more account IDs to the card in the Create a Card API request. Currently, a single card can only be linked to a single account. This limitation will be removed in the future.

The Add Linked Account to a Card API can be utilised to link new accounts to the card. If you wish to remove the linked accounts of the card, you can use the Remove Linked Account of a Card API.

Cards can be linked to both the main account and sub-accounts based on the customer's needs.

Create a Card

POST /cards

{
    "workflow": {
        "code": "client.debit.issuing"
    },
    "data": {
        "card": {
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "alias": "Platinium Plus Card",
            "attributes": {
                "threddCardProduct": "00000",
                "threddImageId": "An image id"
            },
            "linkedAccounts": [
                "00000000-0000-0000-0000-000000000000"
            ]
        }
    },
    "connect": {
        "type": "explicit",
        "serviceProvider": "thredd"
    },
    "metadata": {}
}
{
    "workflow": {
        "code": "client.debit.issuing"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "pending",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Platinium Plus Card",
            "bin": null,
            "pan": null,
            "expirationDate": null,
            "attributes": {
                "threddCardProduct": "00000",
                "threddImageId": "An image id"
            },
            "linkedAccounts": [
                {
                    "accountId": "00000000-0000-0000-0000-000000000000",
                    "accountStatus": "active"
                }
            ],
            "connection": {
                "id": null,
                "serviceProvider": "thredd",
                "reference": null,
                "state": "creation-in-progress",
                "status": null,
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {
        "type": "explicit",
        "serviceProvider": "thredd"
    },
    "metadata": {}
}
{
    "workflow": {
        "code": "client.debit.issuing"
    },
    "data": {
        "card": {
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "physical",
            "alias": "Platinium Plus Card",
            "deliveryAddress": {
                "country": "GB",
                "region": "England",
                "city": "London",
                "street": "Baker Street",
                "houseNumber": "221B",
                "postalCode": "XYZ ABC",
                "refinement": ""
            },
            "attributes": {
                "threddCardProduct": "00000",
                "threddCardManufacturer": "AB Note",
                "threddDeliveryMethod": "0",
                "threddCarrierType": "Type 1",
                "threddImageId": "An image id"
            },
            "linkedAccounts": [
                "00000000-0000-0000-0000-000000000000"
            ]
        }
    },
    "connect": {
        "type": "explicit",
        "serviceProvider": "thredd"
    },
    "metadata": {}
}
{
    "workflow": {
        "code": "client.debit.issuing"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "physical",
            "status": "pending",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Platinium Plus Card",
            "bin": null,
            "pan": null,
            "expirationDate": null,
            "deliveryAddress": {
                "country": "GB",
                "region": "England",
                "city": "London",
                "street": "Baker Street",
                "houseNumber": "221B",
                "postalCode": "XYZ ABC",
                "refinement": ""
            },
            "attributes": {
                "threddCardProduct": "00000",
                "threddCardManufacturer": "AB Note",
                "threddDeliveryMethod": "0",
                "threddCarrierType": "Type 1",
                "threddImageId": "An image id"
            },
            "linkedAccounts": [
                {
                    "accountId": "00000000-0000-0000-0000-000000000000",
                    "accountStatus": "active"
                }
            ],
            "connection": {
                "id": null,
                "serviceProvider": "thredd",
                "reference": null,
                "state": "creation-in-progress",
                "status": null,
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {
        "type": "explicit",
        "serviceProvider": "thredd"
    },
    "metadata": {}
}
{
  "workflow": {
    "code": "client.debit.issuing"
  },
  "data": {
    "card": {
      "id": "00000000-0000-0000-0000-000000000000",
      "clientId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "type": "physical",
      "status": "pending",
      "suspensionReason": null,
      "terminationReason": null,
      "serviceProvider": "thredd",
      "alias": "Gold Card",
      "bin": null,
      "pan": null,
      "expirationDate": null,
      "deliveryAddress": {
        "country": "GB",
        "region": "England",
        "city": "London",
        "street": "Baker Street",
        "houseNumber": "221B",
        "postalCode": "XYZ ABC",
        "refinement": ""
      },
      "attributes": {
        "threddCardProduct": "00000",
        "threddCardManufacturer": "AB Note",
        "threddDeliveryMethod": "0",
        "threddCarrierType": "Type 1",
        "threddImageId": "An image id"
      },
      "linkedAccounts": [
        {
          "accountId": "00000000-0000-0000-0000-000000000000",
          "accountStatus": "active"
        }
      ],
      "connection": {
        "id": null,
        "serviceProvider": "thredd",
        "reference": null,
        "state": "creation-failed",
        "status": null,
        "method": "built-in",
        "error": {
          "category": "technical",
          "origin": "platform",
          "code": "invalid_value_detected",
          "message": "An error occured",
          "attributes": {}
        }
      }
    },
    "connect": {
      "type": "implicit",
      "serviceProvider": "thredd"
    },
    "metadata": {}
  }
}
  1. workflow:
  • code: It can be client.debit.issuing. This indicates that a new card will be issued at a specific service provider of your choice. In this workflow, service provider information must also be provided in connect section.
  1. data:
  • card:
    • clientId: The ID of the active client that will create the card.
    • userId: The ID of the user who will be the cardholder.
    • type: The type of the card. It must be virtual or physical
    • alias: The alias of the card.
    • deliveryAddress: The address to which physical cards will be delivered. For virtual cards, it must remain empty. If left blank on physical cards, the user's residential address is used as the delivery address.
    • attributes: A key value map that can be used for storing any additional metadata that you'd like to link to card. There are some reserved keys for each service provider.
      • thredd's reserved attributes:
        • threddCardProduct: The unique ID of the card product linked to the card.
        • threddDesignId: For physical cards, it is required. Thredd forwards the design ID in the physical card output file to the card manufacturer for card creation. The design ID enables the card manufacturer to determine which card design to print on the card. For example, physical card design blue could be ID PBLUE01.
        • threddImageId: A reference that identifies the image file of the card manufacturer to be printed on the face of the card.
        • threddCardManufacturer: The manufacturer to whom the card generation request should be sent, for example: TCT, AllPay, GNC, Gemalto, Nitecrest and Exceet.
        • threddDeliveryMethod: The card's delivery method can be one of the following: Standard delivery, Registered mail, Direct delivery, Customised delivery
        • threddCarrierType: The carrier product design reference as used by the card manufacturer. This is the letter onto which the card is attached when sent to the cardholder. Identifies the carrier product type of the card manufacturer.
    • linkedAccounts: The list of accounts IDs to be linked to the card. The maximum list size is 10.
  1. connect:
  • type: The type of how connected service provider is decided. Currently, explicit is the only type supported.
  • serviceProvider: The name of the service provider creating the card

Update a Card

PATCH /cards/{cardId}

Updatable attributes of a Card:

  • alias
  • status can be updated based on the state diagram at the top of this page.
  • suspensionReason must be provided when new status is suspended. Possible values are “user-requested", “suspected-fraud" and “suspended-by-third-party“.
  • terminationReason must be provided when new status is terminated.
{
  "workflow": {
    "code": "client.direct"
  },
  "data": {
    "card": {
        "status":"inactive"
    }
  },
  "connect": {},
  "metadata": {}
}
{
    "workflow": {
        "code": "client.direct"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "inactive",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "inactive",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
  "workflow": {
    "code": "client.direct"
  },
  "data": {
    "card": {
        "status":"active"
    }
  },
  "connect": {},
  "metadata": {}
}
{
    "workflow": {
        "code": "client.direct"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "physical",
            "status": "active",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "active",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
  "workflow": {
    "code": "client.direct"
  },
  "data": {
    "card": {
        "alias": "Gold Card"
    }
  },
  "connect": {},
  "metadata": {}
}
{
    "workflow": {
        "code": "client.direct"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "terminated",
            "suspensionReason": null,
            "terminationReason": "terminated-by-third-party",
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "terminated-by-third-party",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
  "workflow": {
    "code": "client.direct"
  },
  "data": {
    "card": {
        "status":"suspended",
        "suspensionReason":"user-requested"
    }
  },
  "connect": {},
  "metadata": {}
}
{
    "workflow": {
        "code": "client.direct"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "suspended",
            "suspensionReason": "user-requested",
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Platinium Plus Debit Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "user-requested",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
  "workflow": {
    "code": "client.direct"
  },
  "data": {
    "card": {
        "status":"terminated",
        "terminationReason":"lost-card"
    }
  },
  "connect": {},
  "metadata": {}
}
{
    "workflow": {
        "code": "client.direct"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "terminated",
            "suspensionReason": null,
            "terminationReason": "lost-card",
            "serviceProvider": "thredd",
            "alias": "Platinium Plus Debit Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "terminated-by-third-party",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}

Get a Card

GET /cards/{cardId}

This endpoint supports a single optional query parameter named as metadata.include. The possible values that can be passed in it are listed below:

keydescription
connect.connectionIncludes information about provider connection of the card.

Connection can have the following states:

statedescription
pendingPending for user connection to reach the appropriate state.
creation-in-progressCard creation is in progress.
update-in-progressCard update is in progress.
dependency-completedUser connection is in the appropriate state.
completed-up-to-dateCard connection has been successfully created and is up to date.
completed-outdatedCard connection update failed.
dependency-failedUser connection is not in the appropriate state.
creation-failedCard creation is failed.
{
    "workflow": {},
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "active",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "active",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}

List Cards

GET /cards

Supported query parameters:

parameterdescription
metadata.page.number0-indexed, default=0
metadata.page.sizedefault=10
data.card.clientIdID of client
data.card.userIdID of user
data.card.typevirtual, physical
data.card.aliasAlias of the card
data.card.statuspending, declined, active, inactive, suspended, frozen, terminated
data.card.serviceProvider
data.card.attributes[key]A key from attributes map. Example usage:
If there is an threddCardProduct defined in attributes with value of 10023, it can be searched using the query of data.card.attributes[threddCardProduct]=10023
{
    "workflow": {},
    "data": {
        "cards": [
            {
                "id": "00000000-0000-0000-0000-000000000000",
                "clientId": "00000000-0000-0000-0000-000000000000",
                "userId": "00000000-0000-0000-0000-000000000000",
                "type": "physical",
                "status": "active",
                "suspensionReason": null,
                "terminationReason": null,
                "serviceProvider": "thredd",
                "alias": "Physical Gold",
                "bin": "999999",
                "pan": "999999******6526",
                "expirationDate": "12/26",
                "attributes": {
                    "threddCardProduct": "00000"
                },
                "deliveryAddress": {
                    "country": "GB",
                    "region": "England",
                    "city": "London",
                    "street": "Baker Street",
                    "houseNumber": "221B",
                    "postalCode": "XYZ ABC",
                    "refinement": ""
                },
                "connection": {
                    "id": "000000000",
                    "serviceProvider": "thredd",
                    "reference": "REF-01234",
                    "state": "completed-up-to-date",
                    "status": "active",
                    "method": "built-in",
                    "error": null
                }
            },
            {
                "id": "00000000-0000-0000-0000-000000000000",
                "clientId": "00000000-0000-0000-0000-000000000000",
                "userId": "00000000-0000-0000-0000-000000000000",
                "type": "virtual",
                "status": "pending",
                "suspensionReason": null,
                "terminationReason": null,
                "serviceProvider": "thredd",
                "alias": "Gold Card",
                "bin": "999999",
                "pan": "999999******6526",
                "expirationDate": "12/26",
                "attributes": {
                    "threddCardProduct": "00000"
                },
                "connection": {
                    "serviceProvider": "thredd",
                    "state": "creation-failed",
                    "method": "built-in",
                    "error": {
                        "category": "technical",
                        "origin": "platform",
                        "code": "invalid_value_detected",
                        "message": "An error occured",
                        "attributes": {}
                    }
                }
            },
            {
                "id": "00000000-0000-0000-0000-000000000000",
                "clientId": "00000000-0000-0000-0000-000000000000",
                "userId": "00000000-0000-0000-0000-000000000000",
                "type": "virtual",
                "status": "active",
                "suspensionReason": null,
                "terminationReason": null,
                "serviceProvider": "thredd",
                "alias": "Gold Card",
                "bin": "999999",
                "pan": "999999******6526",
                "expirationDate": "12/26",
                "attributes": {
                    "threddCardProduct": "00000"
                },
                "connection": {
                    "id": "000000000",
                    "serviceProvider": "thredd",
                    "reference": "000000000",
                    "state": "completed-up-to-date",
                    "status": "active",
                    "method": "built-in",
                    "error": null
                }
            }
        ]
    },
    "connect": {},
    "metadata": {}
}

Add Linked Account to a Card

POST /cards/{cardId}/linked-accounts

{
  "workflow": {
    "code": "direct"
  },
  "data": {
    "linkedAccount": {
      "accountId": "00000000-0000-0000-0000-000000000000"
    }
  },
  "connect": {},
  "metadata": {}
}
{
  "workflow": {
    "code": "direct"
  },
  "data": {
    "linkedAccount": {      
      "accountId": "00000000-0000-0000-0000-000000000000",
      "accountStatus": "active"
    }
  },
  "connect": {},
  "metadata": {}
}

Remove Linked Account of a Card

DELETE /cards/{cardId}/linked-accounts/{linkedAccountId}

{
  "workflow": {},
  "data": {
    "linkedAccount": {      
      "accountId": "00000000-0000-0000-0000-000000000000",
      "accountStatus": "active"
    }
  },
  "connect": {},
  "metadata": {}
}

List Linked Account of a Card

GET /cards/{cardId}/linked-accounts

Supported query parameters:

parameterdescription
metadata.page.number0-indexed, default=0
metadata.page.sizedefault=10
data.linkedAccount.accountStatusstatus of account
{
  "workflow": {},
  "data": {
    "linkedAccounts": [
      {        
        "accountId": "00000000-0000-0000-0000-000000000000",
        "accountStatus": "active"
      },
      {        
        "accountId": "00000000-0000-0000-0000-000000000000",
        "accountStatus": "active"
      },
    ]
  },
  "connect": {},
  "metadata": {
    "page": {
      "size": 20,
      "totalElements": 1,
      "totalPages": 1,
      "number": 0
    }
  }
}

Webhooks

Card webhooks have "cards" in the module field in the webhook container object.

There are a total of 13 different webhooks for cards, 7 of which show changes on the card and 6 of which show changes on the service provider of the card:

Card

  • card-instructed
  • card-activated
  • card-inactivated
  • card-suspended
  • card-declined
  • card-terminated

Card Connection

  • connection-creation-instructed
  • connection-created
  • connection-creation-failed
  • connection-update-instructed
  • connection-updated
  • connection-update-failed

These types are exposed in the webhook.type field.

{
    "webhook": {
        "module": "cards",
        "type": "card-instructed"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "pending",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": null,
                "serviceProvider": "thredd",
                "reference": null,
                "state": "creation-in-progress",
                "status": "active",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
    "webhook": {
        "module": "cards",
        "type": "card-activated"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "active",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "active",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
    "webhook": {
        "module": "cards",
        "type": "card-inactivated"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "physical",
            "status": "inactive",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "deliveryAddress": {
                "country": "GB",
                "region": "England",
                "city": "London",
                "street": "Baker Street",
                "houseNumber": "221B",
                "postalCode": "XYZ ABC",
                "refinement": ""
            },
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "inactive",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
    "webhook": {
        "module": "cards",
        "type": "card-suspended"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "suspended",
            "suspensionReason": "suspected-fraud",
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/21",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "suspected-fraud",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
    "webhook": {
        "module": "cards",
        "type": "card-declined"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "declined",
            "suspensionReason": null,
            "terminationReason": null,
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/26",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": null,
                "serviceProvider": "thredd",
                "reference": null,
                "state": "creation-failed",
                "method": "built-in",
                "error": {
                    "category": "technical",
                    "origin": "platform",
                    "code": "invalid_value_detected",
                    "message": "An error occured",
                    "attributes": {}
                }
            }
        }
    },
    "connect": {},
    "metadata": {}
}
{
    "webhook": {
        "module": "cards",
        "type": "card-terminated"
    },
    "data": {
        "card": {
            "id": "00000000-0000-0000-0000-000000000000",
            "clientId": "00000000-0000-0000-0000-000000000000",
            "userId": "00000000-0000-0000-0000-000000000000",
            "type": "virtual",
            "status": "terminated",
            "suspensionReason": null,
            "terminationReason": "expired-card",
            "serviceProvider": "thredd",
            "alias": "Gold Card",
            "bin": "999999",
            "pan": "999999******6526",
            "expirationDate": "12/21",
            "attributes": {
                "threddCardProduct": "00000"
            },
            "connection": {
                "id": "000000000",
                "serviceProvider": "thredd",
                "reference": "000000000",
                "state": "completed-up-to-date",
                "status": "expired-card",
                "method": "built-in",
                "error": null
            }
        }
    },
    "connect": {},
    "metadata": {}
}

The connection section is optional. Once the card creation process has been initiated at the service provider, the current connection information can also be displayed.

Connection can have the following states:

statedescription
creation-in-progressCard creation is in progress.
creation-failedCard creation is failed.
update-in-progressCard update is in progress.
completed-up-to-dateCard connection has been successfully created / updated and is up to date.
completed-outdatedCard connection update failed.
{
  "webhook": {
    "module": "cards",
    "type": "connection-creation-instructed"
  },
  "data": {
    "card": {
      "id": "00000000-0000-0000-0000-000000000000",
      "clientId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "type": "virtual",
      "status": "pending",
      "suspensionReason": null,
      "terminationReason": null,
      "serviceProvider": "thredd",
      "alias": "Gold Card",
      "bin": null,
      "pan": null,
      "expirationDate": null,
      "attributes": {
        "threddCardProduct": "00000"
      },
      "connection": {
        "id": null,
        "serviceProvider": "thredd",
        "reference": null,
        "state": "creation-in-progress",
        "status": null,
        "method": "built-in",
        "error": null
      }
    }
  },
  "connect": {},
  "metadata": {}
}
{
  "webhook": {
    "module": "cards",
    "type": "connection-created"
  },
  "data": {
    "card": {
      "id": "00000000-0000-0000-0000-000000000000",
      "clientId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "type": "virtual",
      "status": "active",
      "suspensionReason": null,
      "terminationReason": null,
      "serviceProvider": "thredd",
      "alias": "Gold Card",
      "bin": "999999",
      "pan": "999999******6526",
      "expirationDate": "12/21",
      "attributes": {
        "threddCardProduct": "00000",
        "threddImageId": "An image id"
      },
      "connection": {
        "id": "00000000-0000-0000-0000-000000000000",
        "serviceProvider": "thredd",
        "reference": "000000",
        "state": "completed-up-to-date",
        "status": "active",
        "method": "built-in",
        "error": null
      }
    }
  },
  "connect": {},
  "metadata": {}
}
{
  "webhook": {
    "module": "cards",
    "type": "connection-creation-failed"
  },
  "data": {
    "card": {
      "id": "00000000-0000-0000-0000-000000000000",
      "clientId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "type": "virtual",
      "status": "pending",
      "suspensionReason": null,
      "terminationReason": null,
      "serviceProvider": "thredd",
      "alias": "Gold Card",
      "bin": null,
      "pan": null,
      "expirationDate": null,
      "attributes": {
        "threddCardProduct": "00000"
      },
      "connection": {
        "id": null,
        "serviceProvider": "thredd",
        "reference": null,
        "state": "creation-failed",
        "status": null,
        "method": "built-in",
        "error": {
          "category": "technical",
          "origin": "platform",
          "code": "invalid_value_detected",
          "message": "An error occured",
          "attributes": {}
        }
      }
    }
  },
  "connect": {},
  "metadata": {}
}
{
  "webhook": {
    "module": "cards",
    "type": "connection-update-instructed"
  },
  "data": {
    "card": {
      "id": "00000000-0000-0000-0000-000000000000",
      "clientId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "type": "virtual",
      "status": "pending",
      "suspensionReason": null,
      "terminationReason": null,
      "serviceProvider": "thredd",
      "alias": "Gold Card",
      "bin": null,
      "pan": null,
      "expirationDate": null,
      "attributes": {
        "threddCardProduct": "00000"
      },
      "connection": {
        "id": "00000000-0000-0000-0000-000000000000",
        "serviceProvider": "thredd",
        "reference": "REF-01234",
        "state": "update-in-progress",
        "status": "active",
        "method": "built-in",
        "error": null
      }
    }
  },
  "connect": {},
  "metadata": {}
}
{
  "webhook": {
    "module": "cards",
    "type": "connection-updated"
  },
  "data": {
    "card": {
      "id": "00000000-0000-0000-0000-000000000000",
      "clientId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "type": "virtual",
      "status": "active",
      "suspensionReason": null,
      "terminationReason": null,
      "serviceProvider": "thredd",
      "alias": "Silver Card",
      "bin": "999999",
      "pan": "999999******6526",
      "expirationDate": "12/21",
      "attributes": {
        "threddCardProduct": "00000",
        "threddImageId": "An image id"
      },
      "connection": {
        "id": "00000000-0000-0000-0000-000000000000",
        "serviceProvider": "thredd",
        "reference": "REF-01234",
        "state": "completed-up-to-date",
        "status": "active",
        "method": "built-in",
        "error": null
      }
    }
  },
  "connect": {},
  "metadata": {}
}
{
  "webhook": {
    "module": "cards",
    "type": "connection-update-failed"
  },
  "data": {
    "card": {
      "id": "00000000-0000-0000-0000-000000000000",
      "clientId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "type": "virtual",
      "status": "active",
      "suspensionReason": null,
      "terminationReason": null,
      "serviceProvider": "thredd",
      "alias": "Platinium Card",
      "bin": "999999",
      "pan": "999999******6526",
      "expirationDate": "12/21",
      "attributes": {
        "threddCardProduct": "00000",
        "threddImageId": "An image id"
      },
      "connection": {
        "id": "00000000-0000-0000-0000-000000000000",
        "serviceProvider": "thredd",
        "reference": "000000",
        "state": "completed-outdated",
        "status": "active",
        "method": "built-in",
        "error": {
          "category": "technical",
          "origin": "platform",
          "code": "invalid_value_detected",
          "message": "An error occured",
          "attributes": {}
        }
      }
    }
  },
  "connect": {},
  "metadata": {}
}