Docs

Fincore · Guides

Send money to a debit card

Register a 16-digit debit card as the destination instrument and send it Money Out with the same operation you use for CLABEs.

Use this guide when the beneficiary gives you a 16-digit debit card number instead of a CLABE. The Money Out operation is the same. The only difference is the destination instrument you register first.

Note:

Debit-card Money Out is available when the feature is enabled for your integration.

Flow

Step Action Operation Save
1 Retrieve issuing banks Retrieve SPEI participants Issuing bank id.
2 Register the debit-card instrument Register instrument Destination instrument id.
3 Send Money Out Create Money Out transaction Transaction id, trackingId, initial status.
4 Reconcile the status Status update webhook Final transaction state.

1. Register the debit card

Send a debit_card object instead of virtual_clabe. The request must include exactly one payment method; sending both returns 400.

Register a debit-card instrument
curl -X POST https://apicore.stg.finch.lat/v1/clients/$CLIENT_ID/instruments \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "source_bank_id": "9d84b03a-28d1-4898-a69c-38824239e2b1",
    "client_id": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
    "type": "RECEIVER",
    "rfc": "XAXX010101000",
    "alias": "Card ABC123",
    "debit_card": {
      "destination_bank_id": "3054ff18-32a0-478d-b9fe-b5261f9a6e1f",
      "card_number": "1234567812345678",
      "holder_name": "Jane Doe"
    }
  }'
Field Rule
debit_card.destination_bank_id Required. Bank UUID of the card issuer.
debit_card.card_number Required. Exactly 16 digits.
debit_card.holder_name Required. Up to 40 characters.
customer_id Optional. Send it when the card belongs to a Business Unit.
200 OK
{
  "id": "dd7f8d89-94dd-43ca-871b-720fde378b52",
  "bankId": "3054ff18-32a0-478d-b9fe-b5261f9a6e1f",
  "clientId": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
  "ownerId": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
  "alias": "Card ABC123",
  "type": "RECEIVER",
  "instrumentDetail": {
    "cardNumber": "1234567812345678",
    "expirationDate": null,
    "holderName": "Jane Doe"
  },
  "audit": {
    "createdAt": "2025-05-19 19:03:51.084659-06:00",
    "updatedAt": "2025-05-19 19:03:51.084659-06:00",
    "deletedAt": null,
    "blockedAt": null
  },
  "rfc": "XAXX010101000"
}

Card instruments return cardNumber, expirationDate and holderName in instrumentDetail. CLABE instruments return accountNumber, clabeNumber and holderName.

Instrument registration can fail with 400 for missing required fields, malformed UUIDs, an invalid instrument type, an invalid debit-card number, an unsupported BIN, an invalid holder name, sending both virtual_clabe and debit_card, or a conflict with an existing beneficiary; with 404 if the client, customer, source bank or destination bank was not found; and with 500 for an unexpected server error.

2. Send Money Out

Use the instrument id as destination_instrument_id in Create Money Out transaction. Everything else works exactly as in Send money to a CLABE: the same request fields, Idempotency-Key, status webhook and errors.

Create Money Out transaction
curl -X POST https://apicore.stg.finch.lat/v1/transactions/money_out \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
    "source_instrument_id": "709448c3-7cbf-454d-a87e-feb23801269a",
    "destination_instrument_id": "dd7f8d89-94dd-43ca-871b-720fde378b52",
    "transaction_request": {
      "external_reference": "1234567",
      "description": "Customer payout",
      "amount": "250.00",
      "currency": "MXN"
    }
  }'