Debir Cards have a CLABE associated with them, but sometimes you will have only the debit card number (16 digits) and not the CLABE associated with it. You can send a SPEI transaction directly to a debit card. In order to do that, you will need to create an Instrument with the Card's details.
Endpoint:POST /v1/clients/{{clientId}}/instruments
Request
Path parameters:
- clientId: c2d1d1e3-3340-4170-980e-e9269bbbc551
Query Parameters: none
Request Body:
{
    "source_bank_id": "9d84b03a-28d1-4898-a69c-38824239e2b1",
    "client_id":"{{clientId}}",
    "type":"RECEIVER",
    "rfc":"XAXX010101000",
    "alias":"Tarjeta de Debito A",
    "debit_card":{
        "destination_bank_id":"d3435bd9-998d-4e8a-9067-6b71d5fd3ac7",
        "card_number":"5579072268574100",
        "holder_name":"Pedro Navajas Dos"
    }
}Note: holder_name must have a maxLength of 40.
In this example we are using the bank_id for Banamex, you can use the /v1/banks endpoint to search for other Banks.
Response
Status Code: 200 OK
Response Body:
{
    "id": "dd7f8d89-94dd-43ca-871b-720fde378b52",
    "bankId": "d3435bd9-998d-4e8a-9067-6b71d5fd3ac7",
    "clientId": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
    "ownerId": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
    "alias": "Tarjeta con expiracion",
    "type": "RECEIVER",
    "instrumentDetail": {
        "cardNumber": "5579072268574100",
        "expirationDate": "None",
        "holderName": "Pedro Navajas Dos"
    },
    "audit": {
        "createdAt": "2025-05-19 19:03:51.084659-06:00",
        "updatedAt": "2025-05-19 19:03:51.084659-06:00",
        "deletedAt": "None",
        "blockedAt": "None"
    },
    "rfc": "XAXX010101000"
}With the instrument associated to the recipient's Debit Card, and the default Instrument associated with your Centralizing Account, we have all the required data to initiate Money Out transactions.
This endpoint supports Idempotency via the
Idempotency-Keyheader (TTL: 24 hours).
Reuse the same key with the exact same body for safe retries.
See Guides → Idempotency for details and code snippets.
EndpointPOST /v1/transactions/money_out
Request
Path parameters: none
Query Parameters: none
Headers:Authorization: Bearer <token>Content-Type: application/jsonIdempotency-Key: <uuid-v5> (optional but recommended).
Request Body:
{
  "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":"7654329",
    "description":"lorem ipsum dolor sit amet",
    "amount":"1.95",
    "currency":"MXN"
  }
}The value for source_instrument_id is your default instrument
The value for destination_instrument_id is from the previous request
Response
Status Code: 200 OK
Response Body:
{
 "id": "16811ee8-1ef9-4dd4-8d84-9c2df89cf302",
 "bankId": "9d84b03a-28d1-4898-a69c-38824239e2b1",
 "clientId": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
 "externalReference": "1234567",
 "trackingId": "20250306FINCHVLIKQ5SKUM",
 "description": "lorem ipsum dolor sit amet",
 "amount": "1.95",
 "currency": "MXN",
 "category": "DEBIT_TRANS",
 "subCategory": "SPEI_DEBIT",
 "transactionStatus": "INITIALIZED",
 "audit": {
  "createdAt": "2025-03-06 11:57:55.408000-06:00",
  "updatedAt": "2025-03-06 11:57:55.408000-06:00",
  "deletedAt": "None",
  "blockedAt": "None"
 }
}- Invalid key format (not UUID v5) → 400 Bad Request
- Key–body mismatch (same key, different body) → 409 Conflict
- Duplicate while first is in-flight → 409 Conflict(“operation … in progress”)
- Identical retry (same key + same body within 24h) → 200 OK(same payload, served from cache)