---
title: "Create Payin"
method: POST
path: "/v1/instances/{instance_id}/payins/evm"
tags: ["Payins"]
---

# Create Payin

`POST /v1/instances/{instance_id}/payins/evm`

## Path parameters

- `instance_id` string, required

## Headers

- `Idempotency-Key` string — Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.

## Request body

- CreatePayinIn
  - `payin_quote_id` string, required

## Response `200`

Payin started with success

- CreatePayinOut
  - `id` string, required
  - `status` 'processing' | 'on_hold' | 'failed' | 'refunded' | 'completed', required — Payin general status
  - `pix_code` string, nullable — PIX code
  - `memo_code` string, nullable — Memo code
  - `clabe` string, nullable — CLABE code
  - `partner_fee` integer — Payin partner fee amount in cents
  - `tracking_complete` object, required
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Complete step
    - `transaction_hash` string, nullable — Complete transaction hash
    - `completed_at` string, nullable — Complete completed date
  - `tracking_payment` object, required
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Payment step
    - `provider_name` string, nullable — Payment provider name
    - `completed_at` string, nullable — Payment completed date
    - `review_source` string, nullable — Primary risk source that sent this payin to manual review
    - `review_context` object, nullable — Structured risk context for manual review
    - `review_sources` string[], nullable — Every risk source that flagged this payin on the pending review
    - `review_contexts` object, nullable — Structured risk context per flagging source
    - `approved_risk_sources` string[], nullable — Risk sources already approved by an analyst
  - `tracking_transaction` object, required
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Payin transaction step
    - `status` 'failed' | 'completed', nullable — Payin transaction status
    - `external_id` string, nullable — Payin transaction external id
    - `completed_at` string, nullable — Payin transaction completed date
    - `transaction_hash` string, nullable — Blockchain transaction hash
    - `provider_name` 'Nvio Pagos' | 'Brex' | 'Stark Bank' | 'JPMorgan Chase' | 'HSBC' | 'Inter' | 'JP Morgan Chase' | 'Bitso' | 'Citi' | 'CFSB' | 'Triple A Technologies' | 'Portage Bank', nullable — Payment provider name
    - `provider_transaction_id` string, nullable — Payment provider transaction id
    - `sender_name` string, nullable
    - `sender_bank_name` string, nullable
    - `sender_tax_id` string, nullable
    - `sender_bank_code` string, nullable
    - `sender_account_number` string, nullable
    - `end_to_end_id` string, nullable — BACEN Pix end-to-end transaction ID (govt Pix ID)
    - `trace_number` string, nullable
    - `transaction_reference` string, nullable
    - `description` string, nullable
    - `pse_instruction` object, nullable
      - `payment_link` string, required — PSE payment link URL
      - `fid` string, required — PSE funding identifier for webhook matching
      - `full_name` string, required — PSE payer full name
      - `tax_id` string, required — PSE payer document number
      - `document_type` 'CC' | 'NIT', required — PSE payer document type
      - `phone` string, required — PSE payer phone number
      - `email` string, required — PSE payer email
      - `bank_code` string, nullable — PSE payer bank code
    - `transfers_instruction` object, nullable
      - `account` string, required — CVU/CBU/Alias account number
      - `type` 'CVU' | 'CBU' | 'ALIAS', required — Account type (CVU, CBU, or ALIAS)
      - `tax_id` string, nullable — CUIT/CUIL (normalized, digits only)
    - `ted_instruction` object, nullable
      - `beneficiary_name` string, required
      - `tax_id` string, required
      - `bank_code` string, required
      - `bank_name` string, required
      - `branch_code` string, required
      - `account_number` string, required
      - `account_type` string, required
  - `billing_fee_amount` number, nullable — BlindPay fee in cents accrued to your billing cycle (charged at the end of the month). Virtual account deposits below $100.00 always accrue here, so small deposits are delivered in full.
  - `transaction_fee_amount` number, nullable — BlindPay fee in cents deducted from the transaction at the time it is processed. Virtual account deposits of $100.00 or more are charged here (unless your instance is configured for end-of-month billing, in which case every fee accrues to billing_fee_amount).
  - `blindpay_bank_details` object, required
    - `routing_number` string
    - `account_number` string
    - `account_type` string
    - `swift_bic_code` string, nullable
    - `ach` object, nullable
      - `routing_number` string, required
      - `account_number` string, required
    - `wire` object, nullable
      - `routing_number` string, required
      - `account_number` string, required
    - `rtp` object, nullable
      - `routing_number` string, required
      - `account_number` string, required
    - `beneficiary` object, required
      - `name` string
      - `address_line_1` string
      - `address_line_2` string
    - `receiving_bank` object, required
      - `name` string
      - `address_line_1` string
      - `address_line_2` string
    - `swift_account_number` string, nullable
    - `swift_receiving_bank` object, nullable
      - `name` string, nullable
      - `address_line_1` string, nullable
      - `address_line_2` string, nullable
  - `customer_id` string, nullable
  - `receiver_amount` number, nullable — 10.10 USDC
  - `payment_method` 'ach' | 'wire' | 'pix' | 'ted' | 'spei' | 'transfers' | 'pse' | 'international_swift' | 'rtp', nullable
  - `sender_amount` number, nullable — 52.40 BRL needs to be sent in a pix transfer

## Other responses

- `400` — Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_INVALID_BANK_CODE`, `BANK_ACCOUNTS_INVALID_ROUTING`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BANK_ACCOUNTS_PLAID_NOT_ENABLED`, `BANK_ACCOUNTS_RTP_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_KYC_TYPE_NOT_AVAILABLE`, `CUSTOMERS_NAME_INVALID`, `CUSTOMERS_NOT_FOUND`, `FILES_UNREADABLE`, `PAYABLES_ALREADY_PAID_OR_EXPIRED`, `PAYABLES_AMOUNT_NEGATIVE`, `PAYABLES_BANK_ACCOUNT_INVALID`, `PAYABLES_CODE_UNRESOLVABLE`, `PAYABLES_CURRENCY_MUST_BE_BRL`, `PAYABLES_DOCUMENT_INVALID`, `PAYABLES_DUPLICATE`, `PAYABLES_NOT_CANCELABLE`, `PAYABLES_PIX_AMOUNT_REQUIRED`, `PAYINS_FUNDING_ACCOUNT_INVALID`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYINS_VIRTUAL_ACCOUNT_REQUIRED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `QUOTES_NOT_FOUND`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PARTNER_NOT_ELIGIBLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.
- `401` — Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.
- `403` — Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.
- `404` — Possible error codes: `CUSTOMERS_NOT_FOUND`, `PAYABLES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.
- `422` — Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.
- `429` — Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.
- `500` — Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.
- `502` — Possible error codes: `PAYINS_FUNDING_PULL_FAILED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.
- `503` — Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.

---

[API](https://skmtc.dev/blindpay/apis/blindpay-api.md) · [All operations](https://skmtc.dev/blindpay/apis/blindpay-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/blindpay/blindpay-api/revisions/470de27afb7b/schema)
