Skip to content

Instantly share code, notes, and snippets.

@michelle
Last active September 29, 2015 04:53
Show Gist options
  • Save michelle/706edf688caa3f5b66b1 to your computer and use it in GitHub Desktop.
Save michelle/706edf688caa3f5b66b1 to your computer and use it in GitHub Desktop.
Debit card transfers beta API

Deprecated

This documentation is now deprecated. Please see https://stripe.com/docs/connect/migrating for the latest documentation.

Thanks!


Debit card transfers

To use debit card transfers, you will need to disable automatic transfers in your dashboard: https://manage.stripe.com/account/transfers

This will allow you to accumulate balance on your Stripe account so you can pay out to third party recipients.

Fees are the same as they are for bank account transfers. ($0.25 per transfer, $1 per failed transfer.)

Allowed card types

We currently support transferring to Visa and MasterCard debit cards only. This does not include prepaid cards.

Managing recipients

These endpoints mirror the customer card endpoints in terms of parameters. They will not change for full launch, but we will be adding a few convenience endpoints as well.

POST /v1/recipients/rp_xxx/cards to create a new card (same parameters/behavior as https://stripe.com/docs/api#create_card).

POST /v1/recipients/rp_xxx/cards/card_xxx to update card_xxx (same parameters/behavior as https://stripe.com/docs/api#update_card).

DELETE /v1/recipients/rp_xxx/cards/card_xxx to delete card_xxx (same behavior as https://stripe.com/docs/api#delete_card).

GET /v1/recipients/rp_xxx/cards to list all cards for the recipient (same parameters/behavior as https://stripe.com/docs/api#list_cards).

GET /v1/recipients/rp_xxx/cards/card_xxx to retrieve card_xxx (same behavior as https://stripe.com/docs/api#retrieve_card).

POST /v1/recipients with card information

POST /v1/recipients/rp_xxx with card information to update the default card.

There are three new webhooks: recipient.card.created, recipient.card.updated, and recipient.card.deleted.

Creating a transfer to a debit card

POST /v1/transfers with a card parameter:

curl https://api.stripe.com/v1/transfers \
   -u sk_test_012345: \
   -d amount=400 \
   -d currency=usd \
   -d recipient=rp_XYZ \
   -d card=card_ABC
   -d "description=Transfer to test@example.com"

You can use the test debit cards listed here: https://stripe.com/docs/testing

Response:

{
  "id": "tr_333",
  "object": "transfer",
  "created": 1395692698,
  "date": 1395692698,
  "livemode": false,
  "amount": 400,
  "currency": "usd",
  "status": "paid",
  "balance_transaction": "txn_000",
  "account": null,
  "card": {
    "object": "card",
    "id": "card_ABC",
    "last4": "4242",
    "type": "Visa",
    "exp_month": 8,
    "exp_year": 2015,
    "fingerprint": "v0ZoM5S1UOUEZTdW",
    "customer": "cus_3pvgeq9KUzCpjC",
    "country": "US",
    "name": null,
    "address_line1": null,
    "address_line2": null,
    "address_city": null,
    "address_state": null,
    "address_zip": null,
    "address_country": null,
    "cvc_check": null,
    "address_line1_check": null,
    "address_zip_check": null
  },
  "description": "Transfer to test@example.com",
  "metadata": {
  },
  "statement_description": null,
  "recipient": "rp_XYZ"
}

If your recipient only has one card, you may omit the card parameter. However, if your recipient has both a card and a bank account, you will need to either pass in the card or bank_account parameter:

POST /v1/transfers with a bank_account parameter:

curl https://api.stripe.com/v1/transfers \
   -u sk_test_012345: \
   -d amount=400 \
   -d currency=usd \
   -d recipient=rp_XYZ \
   -d bank_account=ba_ABC
   -d "description=Transfer to test@example.com"

Response:

{
  "id": "tr_444",
  "object": "transfer",
  "created": 1395692698,
  "date": 1395692698,
  "livemode": false,
  "amount": 400,
  "currency": "usd",
  "status": "paid",
  "balance_transaction": "txn_000",
  "account": {
    "object": "bank_account",
    "id": "ba_ABC",
    "bank_name": "STRIPE TEST BANK",
    "last4": "6789",
    "country": "US",
    "currency": "usd",
    "validated": false,
    "verified": false,
    "fingerprint": "iRcUf75inH2iHjYo",
    "disabled": false
  },
  "description": "Transfer to test@example.com",
  "metadata": {
  },
  "statement_description": null,
  "recipient": "rp_XYZ"
}

You can see more information about the rest of the transfer API here: https://stripe.com/docs/api#transfers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment