Card Payouts
Learn how to send money to recipients' credit or debit cards.
Send funds to your recipient's debit or credit card using Payouts. Please note card payouts are only available to Visa and Mastercard cards.
If you have any questions about creating payouts, reach out to your Finix Point of Contact or Finix Support.
Step 1: Create a Recipient Identity
The first step for making a payout is creating a RECIPIENT
Identity to represent whom you'll send funds to. The Identity resource helps manage bank accounts, cards, payout history, and the details of your customers. You can create either PERSONAL
or BUSINESS
Recipients.
Required Data
Required | Optional | Invalid |
---|---|---|
Field | type: PERSONAL | type: BUSINESS |
---|---|---|
Type type | ||
First Name first_name | ||
Last Name last_name | ||
Personal Address personal_address | ||
Business Name business_name | ||
Doing Business As doing_business_as | ||
Business Address business_address | ||
Business Phone business_phone | ||
Personal Email email | ||
Personal Phone phone |
API Request
curl https://finix.sandbox-payments-api.com/identities \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
-d '{
"entity": {
"first_name": "John",
"last_name": "Doe",
"personal_address": {
"line1": "741 Douglass St",
"line2": "Apartment 7",
"city": "San Mateo",
"region": "CA",
"postal_code": "94114",
"country": "USA"
}
},
"identity_roles": ["RECIPIENT"],
"type": "PERSONAL"
}'
{
"id": "ID2dgoqygWvVthU9kQBKz7t4",
"created_at": "2024-07-31T18:28:05.92Z",
"updated_at": "2024-07-31T18:28:05.92Z",
"application": "APgPDQrLD52TYvqazjHJJchM",
"entity": {
"ach_max_transaction_amount": 0,
"amex_mid": null,
"annual_card_volume": 0,
"business_address": null,
"business_name": null,
"business_phone": null,
"business_tax_id_provided": false,
"business_type": null,
"default_statement_descriptor": null,
"discover_mid": null,
"dob": null,
"doing_business_as": null,
"email": null,
"first_name": "John",
"has_accepted_credit_cards_previously": false,
"incorporation_date": null,
"last_name": "Doe",
"max_transaction_amount": 0,
"mcc": null,
"ownership_type": null,
"personal_address": {
"line1": "741 Douglass St",
"line2": "Apartment 7",
"city": "San Mateo",
"region": "CA",
"postal_code": "94114",
"country": "USA"
},
"phone": null,
"principal_percentage_ownership": null,
"short_business_name": null,
"tax_authority": null,
"tax_id_provided": false,
"title": null,
"url": null
},
"identity_roles": ["RECIPIENT"],
"tags": {},
"type": "PERSONAL",
"_links": {
"self": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4"
},
"verifications": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/verifications"
},
"merchants": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/merchants"
},
"settlements": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/settlements"
},
"authorizations": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/authorizations"
},
"transfers": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/transfers"
},
"payment_instruments": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/payment_instruments"
},
"associated_identities": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/associated_identities"
},
"disputes": {
"href": "https://finix.sandbox-payments-api.com/identities/ID2dgoqygWvVthU9kQBKz7t4/disputes"
},
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
}
}
}
Step 2: Add a Payment Instrument for the Recipient
Creating Payment Instruments
and passing payment details (account number, card number, etc.) directly via the API should only be done for testing purposes and by PCI Level 1 compliant entities. If you aren't a Level 1 PCI-compliant entity, you must use our Tokenization Forms or Mobile Tokenization to accept payment details and comply with PCI regulations. If you have any questions, please don't hesitate to reach out to your Finix point of contact or email the Finix Support team.
Now that we've created an Identity
for our recipient, we'll need to create a Payment Instrument
using the recipient's card details. A Payment Instrument
represents the recipient's payment method that will receive funds. When creating Payment Instruments
for Payouts, attempt_bank_account_validation_check
must be set to true
.
If you have any questions about creating Payment Instruments
, reach out to your Finix Point of Contact or Finix Support.
curl https://finix.sandbox-payments-api.com/payment_instruments \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u US9bhCUqoTxo7V6di8ceb3Td:e704591a-1972-4b41-9884-6a67f5d7cdbb \
-d '{
"address": {
"city": "San Francisco",
"country": "USA",
"line1": "900 Metro Center Blv",
"postal_code": "94404",
"region": "CA"
},
"expiration_month": 12,
"expiration_year": 2029,
"identity": "IDoFbnXcAmPPU2i4YKu8Mhr4",
"name": "John Smith",
"number": "5200820000007201",
"security_code": "022",
"tags": {
"card_name": "Business Card"
},
"type": "PAYMENT_CARD"
}'
{
"id": "PIxjVj1SCbcesKGtE71oW9En",
"created_at": "2023-12-02T01:04:55.68Z",
"updated_at": "2023-12-02T01:04:55.68Z",
"application": "AP5Tq3MMxKwHYX7soDncrCQ3",
"created_via": "API",
"currency": "USD",
"disabled_code": null,
"disabled_message": null,
"enabled": true,
"fingerprint": "FPRihepew9PmKPKA1upHe8XXL",
"identity": "IDoFbnXcAmPPU2i4YKu8Mhr4",
"instrument_type": "PAYMENT_CARD",
"address": {
"line1": "900 Metro Center Blv",
"line2": null,
"city": "San Francisco",
"region": "CA",
"postal_code": "94404",
"country": "USA"
},
"address_verification": "UNKNOWN",
"bin": "520082",
"brand": "MASTERCARD",
"card_type": "DEBIT",
"expiration_month": 12,
"expiration_year": 2029,
"issuer_country": "NON_USA",
"last_four": "7201",
"name": "John Smith",
"security_code_verification": "UNKNOWN",
"tags": {
"card_name": "Business Card"
},
"type": "PAYMENT_CARD",
"_links": {
"self": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIxjVj1SCbcesKGtE71oW9En"
},
"authorizations": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIxjVj1SCbcesKGtE71oW9En/authorizations"
},
"transfers": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIxjVj1SCbcesKGtE71oW9En/transfers"
},
"verifications": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIxjVj1SCbcesKGtE71oW9En/verifications"
},
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/AP5Tq3MMxKwHYX7soDncrCQ3"
},
"identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDoFbnXcAmPPU2i4YKu8Mhr4"
},
"updates": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIxjVj1SCbcesKGtE71oW9En/updates"
}
}
}
Step 3: Verify the Payment Instrument
Now that we've associated a payment instrument with a recipient, we'll need to verify whether or not the card is eligible to receive push-to-card disbursements.
Luckily, you've already done most of the heavy lifting. Just make making the following request to the Verifications
endpoint. The Verification
resource that gets returned includes a set of general attributes and details about the card in question (e.g. card type, issuer information, etc.).
curl https://finix.sandbox-payments-api.com/payment_instruments/PIxjVj1SCbcesKGtE71oW9En/verifications \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u US9bhCUqoTxo7V6di8ceb3Td:e704591a-1972-4b41-9884-6a67f5d7cdbb \
-d '{
"processor": "DUMMY_V1"
}'
{
"id": "VIffDtxJe3LWw2CkjYzWpy7y",
"created_at": "2023-12-02T01:05:49.15Z",
"updated_at": "2023-12-02T01:05:49.20Z",
"application": "AP5Tq3MMxKwHYX7soDncrCQ3",
"identity": null,
"merchant": null,
"merchant_identity": null,
"messages": [],
"payment_instrument": "PIxjVj1SCbcesKGtE71oW9En",
"payment_instrument_verification_details": {
"push_to_card_domestic": null,
"push_to_card_cross_border": null,
"card_type": null,
"billing_currency": null,
"issuer_country": "UNKNOWN"
},
"processor": "DUMMY_V1",
"raw": null,
"state": "PENDING",
"tags": {},
"trace_id": "96be3a15-d72e-485a-828c-8d0c23f16e64",
"type": "PAYMENT_INSTRUMENT",
"_links": {
"self": {
"href": "https://finix.sandbox-payments-api.com/verifications/VIffDtxJe3LWw2CkjYzWpy7y"
},
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/AP5Tq3MMxKwHYX7soDncrCQ3"
},
"payment_instrument": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIxjVj1SCbcesKGtE71oW9En"
}
}
}
Payment Instrument Verification Result Codes
Card Type (card_type
)
This code indicates whether the card is credit, debit, or prepaid.
CODE | Description |
---|---|
CREDIT | Credit or Charge Card |
DEBIT | Debit or Deferred Debit Card |
HSA_FSA | HSA or FSA Card |
RELOADABLE_PREPAID | Reloadable Prepaid Card |
UNRELOADABLE_PREPAID | Unreloadable Prepaid Card |
UNKNOWN | Unknown |
Push to Card Domestic (push_to_card_domestic
)
This field is used to indicate push and pull from card functionality is supported domestically for this instrument.
CODE | Description |
---|---|
FAST_FUNDS | Indicates fast fund movement is supported for this instrument |
NON_FAST_FUNDS | Indicates movement is supported for this instrument |
NOT_SUPPORTED | Indicates this instrument is not supported |
UNKNOWN | Unexpected verification result |
Push to Card Cross Border (push_to_card_cross_border
)
This field is used to indicate push and pull from card functionality is supported cross border for this instrument.
CODE | Description |
---|---|
FAST_FUNDS | Indicates fast fund movement is supported for this instrument |
NON_FAST_FUNDS | Indicates movement is supported for this instrument |
NOT_SUPPORTED | Indicates this instrument is not supported |
UNKNOWN | Unexpected verification result |
Raw Message Response Arguments
Address Verification Results (address_verification_results
)
Letter | Description |
---|---|
D, F, M, Y | Address verified |
A, B, C, G, I, N, P, R, S, U, W | Address not verified |
Z | Postal/ZIP match, street addresses do not match or street address not included in request |
Card Verification 2 Results (cvv2_result_code
)
Letter | Description |
---|---|
M | CVV and expiration verified |
N, P, S | Either CVV or expiration date is incorrect |
U | Issuer does not participate in CVV2 service |
Card Type (card_type_code
)
This one-character code indicates whether the account is credit, debit, prepaid, deferred debit, or charge.
Letter | Description |
---|---|
C | Credit |
D | Debit |
H | Charge Card |
P | Prepaid |
R | Deferred Debit |
Fast Funds Indicator (fast_funds_indicator
)
Indicates whether or not the card is Fast Funds eligible (i.e. if the funds will settle in 30 mins or less). If not eligible, typically funds will settle within 2 business days.
Letter | Description |
---|---|
B | Fast Funds eligible for all transactions |
D | Fast Funds eligible for only domestic transactions |
N | Not eligible for Fast Funds |
Push Funds Indicator (push_funds_block_indicator
)
This code indicates if the associated card can receive push-to-card disbursements.
Letter | Description |
---|---|
A, B, C | Accepts push-to-card payments |
N | Does not accept push-to-card payments |
Online Gambling Block Indicator (online_gambing_block_indicator
)
Indicates if the card can receive push-payments for online gambling payouts.
Letter | Description |
---|---|
Y | Blocked for online gambling payouts |
N | Not blocked for online gambling payouts |
Card Product ID (card_product_id
)
A combination of card brand, platform, class and scheme.
Letter | Description |
---|---|
A | Visa Traditional |
AX | American Express |
B | Visa Traditional Rewards |
C | Visa Signature |
D | Visa Signature Preferred |
DI | Discover |
DN | Diners |
E | Proprietary ATM |
F | Visa Classic |
G | Visa Business |
G1 | Visa Signature Business |
G2 | Visa Business Check Card |
G3 | Visa Business Enhanced |
G4 | Visa Infinite Business |
G5 | Visa Business Rewards |
I | Visa Infinite |
I1 | Visa Infinite Privilege |
I2 | Visa UHNW |
J3 | Visa Healthcare |
JC | JCB |
K | Visa Corporate T&E |
K1 | Visa Government Corporate T&E |
L | Visa Electron |
M | MasterCard |
N | Visa Platinum |
N1 | Visa Rewards |
N2 | Visa Select |
P | Visa Gold |
Q | Private Label |
Q1 | Private Label Prepaid |
Q2 | Private Label Basic |
Q3 | Private Label Standard |
Q4 | Private Label Enhanced |
Q5 | Private Label Specialized |
Q6 | Private Label Premium |
R | Proprietary |
S | Visa Purchasing |
S1 | Visa Purchasing with Fleet |
S2 | Visa Government Purchasing |
S3 | Visa Government Purchasing with Fleet |
S4 | Visa Commercial Agriculture |
S5 | Visa Commercial Transport |
S6 | Visa Commercial Marketplace |
U | Visa Travel Money |
V | Visa V PAY |
Product Sub-Type (card_product_subtype
)
Description of product subtype.
Letter | Description |
---|---|
AC | Agriculture Maintenance Account |
AE | Agriculture Debit Account/Electron |
AG | Agriculture |
AI | Agriculture Investment Loan |
CG | Brazil Cargo |
CS | Construction |
DS | Distribution |
HC | Healthcare |
LP | Visa Large Purchase Advantage |
MA | Visa Mobile Agent |
MB | Interoperable Mobile Branchless Banking |
MG | Visa Mobile General |
VA | Visa Vale - Supermarket |
VF | Visa Vale - Fuel |
VR | Visa Vale - Restaurant |
Card Sub-Type (card_subtype_code
)
The code for account funding source subtype, such as reloadable and non-reloadable.
Letter | Description |
---|---|
N | Non-Reloadable |
R | Reloadable |
Step 4: Verify and Onboard the Recipient Account
Now that we've associated a Payment Instrument
with our recipient's Identity
we're ready to provision a recipient account. This is the last step before you can begin paying out a recipient Identity
. Luckily you've already done most of the heavy lifting - make one final POST request, a Merchant
resource will get returned.
curl https://finix.sandbox-payments-api.com/identities/IDh3wzPh9tFjodGvzyy23anK/merchants \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u USte61SqeNkAZnpfavK3fQNG:bd98703c-d72c-458e-8873-4295f5bac713 \
-d '{
"processor": "DUMMY_V1"
}'
{
"id": "MUiYhqXdeyd4SufJCtzASW9V",
"created_at": "2023-12-02T01:06:54.57Z",
"updated_at": "2023-12-02T01:06:54.57Z",
"application": "AP5Tq3MMxKwHYX7soDncrCQ3",
"card_cvv_required": false,
"card_expiration_date_required": true,
"convenience_charges_enabled": false,
"country": "USA",
"creating_transfer_from_report_enabled": false,
"currencies": ["USD"],
"default_partial_authorization_enabled": false,
"disbursements_ach_pull_enabled": false,
"disbursements_ach_push_enabled": true,
"disbursements_card_pull_enabled": false,
"disbursements_card_push_enabled": true,
"fee_ready_to_settle_upon": "PROCESSOR_WINDOW",
"gateway": null,
"gross_settlement_enabled": false,
"identity": "IDoFbnXcAmPPU2i4YKu8Mhr4",
"level_two_level_three_data_enabled": false,
"mcc": null,
"merchant_name": "John Smith",
"merchant_profile": "MPobV95YXNLua94jCnpJsvJS",
"mid": null,
"onboarding_state": "PROVISIONING",
"processing_enabled": false,
"processor": "DUMMY_V1",
"processor_details": {},
"ready_to_settle_upon": "PROCESSOR_WINDOW",
"rent_surcharges_enabled": false,
"settlement_enabled": false,
"settlement_funding_identifier": "UNSET",
"surcharges_enabled": false,
"tags": {},
"verification": "VIx3SHyTCWiykSWcEdXaowES",
"_links": {
"self": {
"href": "https://finix.sandbox-payments-api.com/merchants/MUiYhqXdeyd4SufJCtzASW9V"
},
"identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDoFbnXcAmPPU2i4YKu8Mhr4"
},
"verifications": {
"href": "https://finix.sandbox-payments-api.com/merchants/MUiYhqXdeyd4SufJCtzASW9V/verifications"
},
"merchant_profile": {
"href": "https://finix.sandbox-payments-api.com/merchant_profiles/MPobV95YXNLua94jCnpJsvJS"
},
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/AP5Tq3MMxKwHYX7soDncrCQ3"
},
"verification": {
"href": "https://finix.sandbox-payments-api.com/verifications/VIx3SHyTCWiykSWcEdXaowES"
}
}
}
Step 5: Send Payout
Next you'll need to create a Transfer
. A Transfer
represents any flow of funds either to or from a Payment Instrument
. In this case a payout to a debit or credit card.
To create a Transfer
:
- Include the ID of the
Payment Instrument
of the previously tokenized bank account as thedestination
. - In
amount
, set the funds to send in cents. In the below example, $151.00 is getting paid out.
Transfers
can have two possible states SUCCEEDED
and FAILED
.
curl https://finix.sandbox-payments-api.com/transfers \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u US9bhCUqoTxo7V6di8ceb3Td:e704591a-1972-4b41-9884-6a67f5d7cdbb \
-d '{
"amount": 15000,
"currency": "USD",
"destination": "PIxjVj1SCbcesKGtE71oW9En",
"operation_key": "PUSH_TO_CARD",
"tags": {
"order_number": "21DFASJSAKAS"
}
}'
{
"id": "TRkiwUjvxPneNvatWyqPoDNB",
"created_at": "2022-10-10T04:11:27.03Z",
"updated_at": "2022-10-10T04:11:28.69Z",
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"address_verification": null,
"amount": 1510,
"amount_requested": 1510,
"application": "APpJbVTLdEuwGfcxBJvb1qNH",
"currency": "USD",
"destination": "PIxjVj1SCbcesKGtE71oW9En",
"externally_funded": "UNKNOWN",
"failure_code": null,
"failure_message": null,
"fee": 0,
"idempotency_id": null,
"merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
"merchant_identity": "IDqeE5eaMBksiphXMfv3gJZw",
"messages": [],
"raw": null,
"ready_to_settle_at": null,
"security_code_verification": null,
"source": null,
"state": "SUCCEEDED",
"statement_descriptor": null,
"subtype": "API",
"tags": {
"order_number": "21DFASJSAKAS"
},
"trace_id": "228304000167",
"type": "DEBIT",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APpJbVTLdEuwGfcxBJvb1qNH"
},
"self": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRkiwUjvxPneNvatWyqPoDNB"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDqeE5eaMBksiphXMfv3gJZw"
},
"payment_instruments": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRkiwUjvxPneNvatWyqPoDNB/payment_instruments"
},
"reversals": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRkiwUjvxPneNvatWyqPoDNB/reversals"
},
"fees": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRkiwUjvxPneNvatWyqPoDNB/fees"
},
"disputes": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRkiwUjvxPneNvatWyqPoDNB/disputes"
},
"destination": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIRp4Cu3fG7DFQPdzhGcePL"
},
"fee_profile": {
"href": "https://finix.sandbox-payments-api.com/fee_profiles/FPbDSnEPtaT8Nttxj9NJk7eC"
}
}
}