View Categories

Money transfer in 10n payment – P2P

1 min read

P2P Money Transfer (internal) #

This flow covers transfers between two 10nPay individuals via the public gateway. It consists of fee calculation, initiation (SCA challenge), optional code resend, and execution.

0. (Optional) Determine transfer type #

Call GET /api/v1/IndividualPayment/{iban}/is-internal-customer-account to decide whether the beneficiary IBAN belongs to a 10nPay customer. If it returns true, follow the P2P steps below. Otherwise, use the third-party IBAN flow.

1. Calculate transfer fee #

POST https://api-test.10npay.com/app/get-money-transfer-charge
Field Type Description
customerAccount string Source IBAN.
amount number Transfer amount.
id integer Source individual ID.
PaymentType string Use P2P for this scenario.

Response 200 – MoneyTransferChargeResponse (account balance, fee, fee currency, etc.).

2. Initiate P2P transfer (start SCA) #

POST https://api-test.10npay.com/app/{beneficiaryIndividualId}/p2p-money-transfer
Field Type Description
sourceCustomerAccount string Source IBAN.
beneficiaryCustomerAccount string Beneficiary IBAN.
transactionAmount number Amount in BGN.
paymentNotes string? Optional reference.
deviceId string Device fingerprint/ID.

Response – returns an SCA status (HTTP 200). If SMS/OTP or in-app approval is needed, the client must prompt the user accordingly.

3. Resend verification code #

POST https://api-test.10npay.com/app/{beneficiaryIndividualId}/resend-code-p2p-money-transfer

Send the same payload as in step 2 when the OTP expired or was not received.

4. Execute P2P transfer #

POST https://api-test.10npay.com/app/{beneficiaryIndividualId}/execute-p2p-money-transfer
Field Description
sourceCustomerAccount Source IBAN.
beneficiaryCustomerAccount Beneficiary IBAN.
transactionAmount Amount.
paymentNotes Optional reference.
code OTP / SCA code (if required).
deviceId Device fingerprint/ID.

Response 200 – transaction ID (string). If SCA via app is pending, the gateway may return HTTP 202 (Accepted) and the mobile app must poll/finish the in-app challenge before final success.

Error handling #

  • 400 – validation errors (e.g., insufficient balance, invalid accounts).
  • 404 – beneficiary not found.
  • 429 – too many attempts.
  • 500 – retry later.