Push-to-card P2P A2A

Send funds from a customer's payment account to a Visa or Mastercard card. P2P transfers between two people; A2A between two of the same person's cards.

Push-to-card P2P enables approved partners to send funds from consumers' payment accounts to a Visa or Mastercard card. The primary difference between P2P and A2A is that P2P is used when a customer sends funds to another cardholder, whereas A2A is used when a customer sends funds to their own card.

These features require special approval by Paynetics and by both card schemes. When sending OCT, you will use a dedicated set of credentials provided by Paynetics for authenticating to the acquiring API.

To execute a push-to-card payment, you must use the POST /v1/oct endpoint of the Acquiring API.

Field descriptions

  • balance — mandatory. The balance token of the account of the customer the money is sent from. Format: UUID.
  • merchant — mandatory. Token of the merchant. Format: UUID.
  • user — optional. Token of the individual user sending the OCT. Format: UUID.
  • card details — card number (string, length 16), expiration month (string, "01" to "12"), expiration year (string, min current year). Conditionally mandatory if a saved card token is not provided.
  • card — token of the saved recipient card. Conditionally mandatory if card details are not provided. Format: UUID.
  • industry_specific_transaction — mandatory. P for P2P and A for A2A.
  • reference — mandatory. Reference field used for reconciliation. Format: string.
  • amount — mandatory. OCT amount. Format: number, min 0.01.
  • currency — mandatory. OCT currency. Format: ISO 4217. Accepted: GBP, EUR, USD, BGN.
  • first_name — optional. The first name of the sender. Format: string.
  • last_name — optional. The last name of the sender. Format: string.
  • nationality — optional. Sender nationality. Format: ISO 3166 (alpha-2).
  • birthday — optional. Sender birthday. Format: ISO 8601 date.
PUSH-TO-CARD REQUEST — POST /v1/oct
{
  "balance": "8b1c1d20-1cf2-4ab7-92d3-3a3e7b6f12ab",
  "merchant": "0a3b9b0a-93b3-4d51-8f23-e0e6e36a01ff",
  "user": "f9a3a8c1-0b22-4dd1-bb4d-5a6f9d7c3022",
  "card_number": "4444333322221111",
  "card_expiration_month": "12",
  "card_expiration_year": "2030",
  "industry_specific_transaction": "P",
  "cardholder_name": "John Doe",
  "reference": "p2p-2026-05-03-abc",
  "amount": 75.00,
  "currency": "EUR",
  "first_name": "Maria",
  "last_name": "Ivanova",
  "nationality": "BG",
  "birthday": "1990-04-12"
}

API reference

Live request / response schema, parameters, example payload, and cURL / Node / Python / PHP code samples — pulled from the OpenAPI spec for post_/v1/oct/{init}.

POST /v1/oct/{init}
Operation oct

Path parameters

NameExampleDescription
init Token returned from /v1/init. Not required

Request body

Field Type Description
card_expiration_month string (0,any)
010203040506070809101112
card_expiration_year string (0,any)
balance string (0,any)
first_name string (0,any)
last_name string (0,any)
birthday string (0,any)
nationality string (0,any)
aml_check string (0,any)
matchno-match
reference2 string (0,any)
industry_specific_transaction string (0,any)
ADPWGC
merchant string (0,any)
terminal string (0,any)
user string (0,any)
currency string (0,any)
card string (0,any)
card_number string (0,any)
reference string (0,any)
cardholder_name string (2,45)
cvv2 string (0,any)
mid string (0,any)

Example request

{
    "card_expiration_month": "string",
    "card_expiration_year": "string",
    "balance": "string",
    "first_name": "string",
    "last_name": "string",
    "birthday": "string",
    "nationality": "string",
    "aml_check": "string",
    "reference2": "string",
    "industry_specific_transaction": "string",
    "merchant": "string",
    "terminal": "string",
    "user": "string",
    "amount": "number",
    "currency": "string",
    "card": "string",
    "card_number": "string",
    "reference": "string",
    "cardholder_name": "string",
    "cvv2": "string",
    "mid": "string",
    "card_acceptor": {
        "name": "string"
    }
}

Response

Field Type Description
code integer (0,any)

Example response

{
    "code": "integer",
    "data": {
        "card_number": "string",
        "processing_code": "string",
        "amount": "number",
        "stan": "string",
        "local_time": "string",
        "local_date": "string",
        "auth_code": "string",
        "response_code": "string",
        "card_acceptor_terminal_id": "string",
        "card_acceptor_identification_code": "string",
        "currency": "string",
        "transaction": "string",
        "external_transaction_id": "string",
        "error_details": "string",
        "cvv_status": "string",
        "avs_status": "string",
        "ccti_id": "string",
        "transaction_stamp": "string",
        "retrieval_reference_number": "string",
        "card": "string",
        "original_network_response_code": "string",
        "action_code": "string",
        "order": "string"
    }
}
esc
navigate open esc close
Copied