Enabled on request. SPEI accounts are switched on per account. Ask Pagoramp to turn them on.
1. Check availability
Ask what MXN needs for your account. The answer lists the required fields per customer type and account type.2. Create the customer
Required for an individual:firstname, lastname, email. See Virtual account requirements for every combination.
kycStatus incomplete or pending. Anything missing for MXN can be added later with PATCH /customers/{uuid} before you request the account.
3. Request the account
400 with webhook_secret_required.
The response depends on the currency. For MXN, expect requires_action then active:
requires_action: The customer has to verify first. Send them nextStep.url.
active: Ready. Show the bank details to your payer.
422 with the reason in errors[0].reason and no account is created. If it is rejected later you receive virtual_account.failed with a reason. See Webhooks.
4. Show the details to your payer
Show these fields frombankDetails:
How your payer sends the money:
- Open their Mexican banking app and choose a SPEI transfer.
- Enter the CLABE as the destination account.
- SPEI runs around the clock and settles in seconds.
5. Receive the payment
When the payment arrives you receivevirtual_account.payment.received. Amounts are decimal strings in MXN; destinationAmount is in USD, after any fees.
data.transaction.reference to ignore repeats. See Webhooks.
Things to handle
- The CLABE is also returned as
accountNumber. - Payments are converted to USD when they arrive, at the rate in force at that moment.
destinationAmountis what you are settled. - A payment can be held for review. You receive
virtual_account.payment.manual_reviewwith areview.reason, thenreceivedorrejectedafter a decision. GET /virtual-accounts/{uuid}returns the current status at any time, andPOST /virtual-accounts/{uuid}/deactivatestops the account accepting payments.

