Skip to main content

Create Payment

Making Request​

The call must be made using the POST method. Authentication via Authorization header is required.

POST/v1/card_payments

Attribute Description

AttributeTypeDescriptionRequired
card_expiration_datestringCard expiration date, in MMyyyy format (e.g.: 012029)Partial
card_numberstringCard number, without spaces or dashesPartial
card_security_codestringSecurity code (CVV/CVC)Partial
slug_tokenstringA 32-character alphanumeric sequence representing a tokenized card by the /v1/tokenize_card endpoint. Can be used instead of card_number, card_expiration_date and card_security_code.No
slug_stored_cardstringA 32-character alphanumeric sequence representing a card stored in the card vault by the /v1/tokenize_card endpoint. Can be used instead of card_number, card_expiration_date and card_security_code.No
card_holder_documentstringCard holder document (CPF or CNPJ, numbers only)Yes
card_holder_namestringHolder name printed on the cardYes
installmentsintegerNumber of installments (between 1 and 12)
If not sent, default is 1 installmentNo
payment_typestringPayment type (CREDIT or DEBIT)
If not sent, default is CREDITNo
currencystringTransaction currency (BRL)
If not sent, default is BRLYes
amountintegerPayment amount in cents (e.g.: 100 = R$ 1.00)Yes
platform_namestringPlatform name generating the checkoutNo
billing_urlstringURL to redirect the user to the customized billing pageNo
return_urlstringWebhook URL where notifications will be sentNo

Request Example (Standard)​

POST /v1/card_payments
HTTP Request Body
{
"card_payment": {
"card_expiration_date": "012029",
"card_holder_document": "00000000000",
"card_security_code": "123",
"card_holder_name": "John Doe",
"installments": 1,
"payment_type": "CREDIT",
"card_number": "4111111111111111",
"currency": "BRL",
"amount": 100,
"platform_name": "string",
"billing_url": "string",
"return_url": "string"
}
}

Request Example (Zero Dollar) → Card Validation​

POST /v1/card_payments
HTTP Request Body (Zero Dollar) - Card Validation - Example
{
"card_payment": {
"card_expiration_date": "012029",
"card_security_code": "123",
"card_holder_name": "John Doe",
"card_holder_document": "00000000000",
"card_number": "4111111111111111",
"amount": 0,
"platform_name": "string",
"billing_url": "string",
"return_url": "string"
}
}

Request Example (Slug Token)​

POST /v1/card_payments
HTTP Request Body Slug Token - Example
{
"card_payment": {
"slug_token": "XXXXXXXXXXX",
"card_holder_document": "00000000000",
"card_holder_name": "John Doe",
"installments": 1,
"payment_type": "CREDIT",
"currency": "BRL",
"amount": 100,
"platform_name": "string",
"billing_url": "string",
"return_url": "string"
}
}

Request Example (Stored Card)​

POST /v1/card_payments
HTTP Request Body Stored Card - Example
{
"card_payment": {
"slug_stored_card": "XXXXXXXXXXX",
"card_holder_document": "00000000000",
"card_holder_name": "John Doe",
"installments": 1,
"payment_type": "CREDIT",
"currency": "BRL",
"amount": 100,
"platform_name": "string",
"billing_url": "string",
"return_url": "string"
}
}

Success​

After the call, a JSON is returned with status 201 - Created if the procedure was successful.

HTTP 201 Response Body - Example
{
"card_payment": {
"muid": "7bcedaa6-1c58-4ae6-a7ca-3c4628967049",
"external_id": "your-external-id",
"slug": null,
"rrn": "123456789012",
"amount": 1000,
"currency": "BRL",
"status": "approved",
"last_digits": "4321",
"installments": 2,
"tracking_number": "7bcedaa6-1c58-4ae6-a7ca-3c4628967049",
"card_holder_name": "John Doe",
"card_holder_email": null,
"card_holder_document": "12345678901",
"brand": "Visa",
"request_token": "req_tok_abc123xyz",
"payment_type": "credit",
"authorization_code": "A1B2C3",
"refund_tracking_number": null,
"first_digits": "411111",
"active": true,
"slug_authorizer": "7bcedaa6-1c58-4ae6-a7ca-3c4628967049",
"slug_customer": "7bcedaa6-1c58-4ae6-a7ca-3c4628967049",
"slug_terminal": "7bcedaa6-1c58-4ae6-a7ca-3c4628967049",
"slug_merchant": "7bcedaa6-1c58-4ae6-a7ca-3c4628967049",
"sales_channel": null,
"authorizer_merchant_id": "M1234567",
"authorizer_terminal_id": "T7654321",
"transaction_status": "authorized",
"product_or_issuer": null,
"settlement_management_type": null,
"transaction_method": "",
"cancelling": false,
"platform_name": "string",
"billing_url": "string",
"return_url": "string",
"created_at": "2025-09-11T19:45:00Z"
}
}

Notified Events​

  • The system will send notifications for all available transaction statuses.
  • This applies to Checkout, PixQrCode, and Card transactions.
  • Any status change (Creation, confirmation, cancellation, etc.) will result in a call to the webhook configured during the transaction's creation.
  • The notifications will follow the exact same data pattern already used by the existing webhook, ensuring compatibility and consistency in the integration.

For more details, please refer to Webhook - Notification for Card Payment

Errors​

In case of errors, a json will be returned with the error attribute specifying the reason why the operation was invalidated.

HTTP 422 Response Body - Unprocessable Entity - Example
  {
"errors": [
{
"code": "AUTHORIZER_REJECTED",
"msg": "46 - Identification required"
}
],
"muid": "f251e1b753504766957cf4142e936262",
"request_token": "83329FF45587498D88E1590C7FB78CD8",
"amount": 1,
"currency": "BRL",
"tracking_number": "00010609171144580010000000324834",
"last_digits": "1111",
"transaction_status": "REJECTED",
"brand_response_code": "83",
"multiacq_id": "021"
}

🔹 Important Response Attributes​

AttributeDescription
muidUnique transaction identifier
external_idExternal unique identifier created by the client
amountTransaction amount
rrnRetrieval Reference Number (acquirer/bank reference)
statusTransaction response code (accepted, reject, waiting_3ds_authentication)
transaction_statusTransaction status (pending, pre_authorized, authorized, denied, canceled, expired, refunded, waiting)
authorization_codeAuthorization code returned by the acquirer
last_digitsLast 4 card digits
installmentsNumber of installments
created_atTransaction creation date/time
codeTransaction error code (found inside the errors array)
msgError description returned (found inside the errors array)

🔹 Response Codes​

  • 200 OK – Payment processed successfully
  • 422 Unprocessable Entity – Invalid data (e.g.: incorrect CPF format or card number)
  • 401 Unauthorized – Authentication/authorization failure in the API
  • 500 Internal Server Error – Internal processing error

Gateway Error Table​

Error CodeMessageDescription
MIN_INSTALLMENTSInstallments can't be lower than 1The number of installments cannot be less than 1.
MAX_INSTALLMENTSInstallments can't the higher than 12The number of installments cannot be greater than 12.
INVALID_MONTH_NUMBERIncorrect expiration date. Invalid month number.When the month of the card expiration date is invalid.
INCORRECT_EXPIRATION_DATEIncorrect expiration date. Correct format is MMyyyy.When the card expiration date is different from the correct format (mmYYYY).
EXPIRATION_DATE_NON_NUMERICExpiration date has non-numeric character.When the card expiration date has non-numeric characters.
MSG_GENERAL_ERRORUnknown Card Brand.When the card number has more than 19 digits or is empty.
AMOUNT_REQUIREDAmount required.Transaction without sending the amount field.
CURRENCY_REQUIREDCurrency required.Transaction without sending the currency field.
FIELDS_REQUIREDThe following fields are required: expirationDateWhen trying to send a transaction, check the expiration date.
INVALID_CVVInvalid CVV. CVV should be 3 digits.When the card security code is different from 3 digits (except AMEX) and/or is not numeric.
CURRENCY_NOT_SUPPORTEDCurrency not supported. Please refer to our documentation to see supported currencies.When trying to send a transaction, check the supported currency.
CURRENCY_INVALID_FORMATCurrency must be notated in ISO 4217 currency code.When trying to send a transaction, check the supported currency format.
INVALID_AMOUNTInvalid AmountThe amount field is invalid.
AMOUNT_NOT_SUPPORTEDAmount can't be higher than 100 millionValues greater than 100 million are not supported.
AMOUNT_OUT_OF_BOUNDSAmount value out of bounds (max 2 digits expected for fraction)When the amount has more than two digits after the decimal point.
SPLIT_VALUE_TOO_HIGHSplits total value can't be equal or higher than the transaction amount.When trying to send a transaction, verify that the total value of splits cannot be equal to or greater than the transaction amount.
EMPTY_SPLITField splits can't be empty if splitValueType field is presentWhen trying to send a transaction, verify that the splits field cannot be empty if the splitValueType field is present.
EMPTY_SPLIT_TYPEField splitValueType can't be empty if splits field is presentWhen trying to send a transaction, the splitValueType field cannot be empty if the splits field is present.
OWNER_IN_SPLITMerchant executing the transaction must not be on splits fieldIf you are the one executing the split, you should not be included in the split field.
SPLIT_MERCHANT_DUPLICATIONCan't have duplicated documentId in splitWhen trying to send a transaction, you cannot have a duplicated documentId.
INVALID_INSTALLMENTS_PLAN_ENTRYInstallments plan entry cannot be the same as or lower than the previous entry.When trying to send a transaction, the installment plan entry value should not be the same as or lower than the previous entry.
INSTALLMENTSPLAN_ENTRIES_AND_INSTALLMENTSMISMATCHInstallmentsPlan should have the same amount of entries as the installments field value.When trying to send a transaction, the installment plan should have the same number of entries as the installments field value.
INSTALLMENTS_PLAN_CANT_BE_EMPTYInstallments plan cannot be empty.When trying to send a transaction, the installment plan cannot be empty.
INVALID_NULL_OR_ZERO_INSTALLMENTS_PLAN_ENTRYInstallments plan entries cannot be null nor 0 (zero).When trying to send a transaction, you cannot send null or 0 (zero) installments.
CUSTOM_NOT_ALLOWEDCustomer not allowed for custom installment plan transaction.Customer not allowed for custom installment plan transaction.
CARDBRAND_NOT_ALLOWEDCardbrand must be Visa for custom installment plan transactions.The card brand must be Visa for custom installment plan transactions.
MSG_GENERAL_ERRORThese documentId were not found: "S"document_id not found.
MSG_GENERAL_ERRORThe following merchants aren't enabled to process CNP with authorizer POSTILION: "S"Merchant not enabled to process CNP.
Split value must be higher than zeroSplit value must be higher than zeroWhen trying to send a transaction, the split value must be greater than zero.
Can't have more than 20 splits entriesCan't have more than 20 splits entriesWhen trying to send a transaction, you cannot have more than 20 split entries.