The error "No currency assigned to vendor (Maintain master record)" appears when creating a purchasing document - most commonly a contract in ME31K - for a vendor whose Purchasing Data view has no order currency maintained. This guide covers the exact fix, then goes deeper into vendor master account groups and screen layout control, order currency vs. company code currency, a real-world scenario, and a full troubleshooting and prevention checklist. If you encounter any errors in SAP, feel free to send a screenshot to pramod@learntosap.com for help.
Open the vendor master for change and select Purchasing Data.
In the Purchasing Data view, select and maintain the Order Currency field - for example, INR.
If the Purchasing Data view or Order Currency field isn't appearing at all on the vendor master, the vendor's account group screen layout needs to be checked.
Path: SPRO → Financial Accounting → Accounts Receivable and Accounts Payable → Vendor Accounts → Master Data → Preparations for Creating Vendor Master Data → Define Account Groups with Screen Layout (Vendors).
Select account Group 100 - Vendors (or the relevant vendor account group used by this vendor).
Select Purchasing Data in the field status group list.
Select Purchase Order Currency and set its field status to Optional or Required, as appropriate for your business.
Save.
Every purchasing document in SAP - a purchase order, contract, scheduling agreement, or RFQ - needs a currency to express prices, condition values, and eventual invoice amounts in. Rather than asking a buyer to select a currency manually on every single document, SAP defaults the order currency automatically from the vendor master's Purchasing Data view the moment a vendor is entered on a purchasing document, which is why the field needs to exist and be populated before any purchasing document can be created for that vendor.
When a vendor master is missing this value entirely - most often because the vendor was created without the Purchasing Data view being touched, or was originally set up purely for a non-purchasing purpose such as a one-time payment vendor - SAP has genuinely nothing to default and correctly stops rather than guessing or defaulting to an arbitrary currency that might not match what the vendor actually invoices in.
A vendor account group is one of the most consequential setup decisions in vendor master data, since it controls which views (General Data, Company Code Data, Purchasing Data, and their individual fields) are visible, hidden, optional, or mandatory for every vendor created under that group. This is precisely why two vendors can look structurally different in the system despite both being "vendors" - if they were created under different account groups, one might show a full Purchasing Data view with a mandatory order currency field, while another (perhaps an account group intended purely for financial/one-time vendors) might not show purchasing fields at all.
This has a direct practical implication for troubleshooting this specific error: if the Order Currency field is genuinely missing from a vendor's screen entirely (not just blank), the fix isn't in the individual vendor master at all - it's in the account group's screen layout configuration, exactly as covered in Solution 2 above. Attempting to fix an individual vendor when the real gap is at the account group level means every other vendor created under that same group will hit the identical error the first time someone tries to use them in purchasing.
| Concept | Where It's Set | What It Controls |
|---|---|---|
| Order Currency | Vendor master, Purchasing Data view | The currency used on purchasing documents (POs, contracts) with this vendor - typically the currency the vendor actually invoices in |
| Company Code Currency | Company code configuration (OBY6) | The local/functional currency used for that company code's financial reporting and books |
| Exchange Rate | Transaction OB08 | The rate used to convert amounts between order currency and company code currency when the two differ |
It's entirely normal, and very common in multinational businesses, for a vendor's order currency to differ from the company code currency - a US-based company code might regularly purchase from a European vendor invoicing in EUR, for example. SAP handles this automatically as long as both currencies are properly configured and a valid exchange rate exists in OB08; the two currencies being different is not itself a source of error, only a genuinely missing order currency on the vendor master is.
Pradnya Sharma, an SAP MM support analyst, received a ticket from a procurement buyer who couldn't create a long-term supply contract in ME31K for a vendor that had been in the system for over a year. Checking the vendor master in XK03, Pradnya noticed the vendor simply had no Purchasing Data view at all - only General Data and Company Code Data were visible.
Digging into the vendor's history, she found the vendor had originally been set up by the finance team purely to process a one-time reimbursement payment, using an account group specifically designed for non-purchasing vendors with the Purchasing Data view intentionally hidden. Now that the same vendor needed to be used for a genuine, ongoing procurement relationship, the existing vendor master simply wasn't built for that purpose - no amount of editing the existing record would add the Purchasing Data view, since it was suppressed at the account group level entirely.
Rather than trying to force the existing vendor master to work, Ananya's team followed standard practice and extended the vendor to a second, purchasing-relevant account group (using transaction XK01 to extend, or in some configurations creating a fresh vendor master under the correct group), then maintained the order currency on the new Purchasing Data view. The ME31K contract could then be created successfully. This scenario is a useful reminder that this error isn't always a simple "field left blank" issue - sometimes it reflects the vendor being set up for a fundamentally different purpose than what's now being asked of it, and recognizing that distinction early avoids wasted troubleshooting time trying to edit a view that was never there to begin with.
Vendor master maintenance, including Purchasing Data and order currency, typically requires authorization tied to transaction XK02 and the specific vendor account group, and most organizations restrict this to procurement master data or purchasing configuration teams rather than general purchasing users. This matters because an incorrectly set order currency doesn't just affect one document - it becomes the default for every future purchasing document with that vendor until corrected, and a wrong currency can create real complications during invoice verification if it doesn't match what the vendor actually bills in.
Some organizations implement a lightweight approval workflow for vendor master changes specifically, so that a change to a sensitive field like order currency is reviewed by a second person before being saved, particularly for vendors already actively used in open purchasing documents. This is a reasonable middle ground between allowing unrestricted vendor master edits and requiring a full formal change-management process for every minor update.
Following the pattern in the real-world scenario above - a vendor originally created for payments only, later needed for purchasing - a short test pass avoids discovering gaps only once a buyer is actively trying to create a live contract or purchase order.
Pooja Patil, an SAP MM consultant, was engaged after a company consolidated two regional SAP systems into one, migrating several hundred vendor master records from a legacy European system into the combined landscape. Shortly after cutover, procurement teams began reporting the "No currency assigned to vendor" error across dozens of vendors simultaneously - clearly not an isolated data entry issue, given the scale.
Investigating the migration mapping, Pooja found the legacy system's vendor export had captured most Purchasing Data fields correctly, but the order currency field specifically had been mapped incorrectly during the load - it had been left blank for any vendor whose original currency code didn't have a direct one-to-one match in the target system's currency table, silently skipping the field rather than flagging an error during the load itself. Rather than fixing each affected vendor manually through XK02, Tomas's team used transaction MASS (mass maintenance) scoped to vendor master data, filtering specifically for Purchasing Data records with a blank order currency field, and updated the entire affected population in a single coordinated batch after confirming the correct currency for each with the regional procurement team.
This scenario highlights a pattern distinct from the single-vendor cases covered earlier in this guide: when this error appears for many vendors at once rather than one, the root cause is almost always systemic - a migration mapping gap, an account group configuration change, or a bulk vendor creation process - and is far more efficiently resolved with a mass-maintenance tool like MASS or LSMW than by working through affected vendors one at a time in XK02.
When this error affects more than a handful of vendors, as in the scenario above, transaction MASS (with object type BUS1001 or the relevant vendor object) or XK99 (mass maintenance for vendor master data specifically) lets you select a broad population of vendors, filter to those missing an order currency, and apply a correction in bulk rather than opening each vendor individually in XK02.
Before running a mass update, it's worth exporting the affected vendor list first (via a query against table LFM1, which stores purchasing-organization-specific vendor data including order currency) to confirm the actual scope and get the correct currency value confirmed by procurement for each vendor or vendor group, rather than assuming a single currency applies uniformly across every affected vendor - as the consolidation scenario above illustrates, different vendors can legitimately need different correct currencies even when they were all affected by the same underlying root cause.
| Error / Symptom | Root Cause | Typical Fix |
|---|---|---|
| No currency assigned to vendor (Maintain master record) | Order Currency field blank or Purchasing Data view missing on the vendor master | Maintain Order Currency in XK02, or extend the account group's screen layout |
| Purchasing organization not defined for this vendor | The vendor has no Purchasing Data record for the specific purchasing organization being used | Extend the vendor to the relevant purchasing organization via XK01 (extend) |
| Vendor is blocked for purchasing | A deliberate purchasing block flag set on the vendor master, unrelated to currency | Remove the purchasing block in XK02 after confirming with the responsible team |
| No exchange rate found for currency pair | Order currency is maintained correctly, but OB08 has no valid exchange rate to the company code currency | Maintain the missing exchange rate in OB08, not a vendor master change |
These errors can look similar at a glance - all block a purchasing document from being created - but each points to a different configuration layer. Recognizing which specific message is showing avoids wasted time investigating the wrong master data or configuration area.
The underlying concept - a purchasing-relevant vendor needing an order currency before a purchasing document can be created - is unchanged in SAP S/4HANA, but the master data object itself has changed significantly. In S/4HANA, the classic separate vendor master (XK01/XK02/XK03) is replaced by the unified Business Partner model, where a vendor is represented as a BP with a Vendor role assigned (transaction BP), and Purchasing Data (including order currency) is maintained on that vendor role's Purchasing view rather than a standalone vendor master transaction.
Organizations that have migrated to S/4HANA, or are running it natively, will see this exact error referencing the same missing order currency concept, but the fix path runs through transaction BP instead of XK02 - selecting the relevant Business Partner, switching to the Vendor role, and maintaining Purchasing Data there. The account-group-level screen layout control described in Solution 2 above has a parallel concept in the Business Partner model through BP grouping and role configuration, though the specific customizing transactions differ from classic account group screen layout (OBD2-style) configuration.
Although this error surfaces during a purchasing transaction, order currency has direct downstream implications for Financial Accounting. Once a purchase order or contract is created in a given order currency, subsequent invoice verification (MIRO) uses that same currency as the default for matching the vendor's invoice, and any exchange rate difference between order currency and company code currency at the time of invoice posting flows through to a dedicated exchange rate difference account in FI.
Getting the order currency right at the vendor master level - rather than as a one-off manual override during document creation - matters for FI because it ensures consistent, predictable currency handling across the vendor's entire transaction history, rather than requiring pricing and finance teams to manually verify currency correctness on every single document. This is one more reason the prevention checklist above recommends making Order Currency mandatory rather than optional for purchasing-relevant account groups - it removes a manual verification step that would otherwise fall to both procurement and finance on every new purchasing document.
| Transaction | Purpose |
|---|---|
| XK01 | Create a new vendor master record (centrally, across all views). |
| XK02 | Change an existing vendor master record, including Purchasing Data. |
| XK03 | Display a vendor master record to check current field values. |
| OBD2 | Define account groups with screen layout for vendors (customizing). |
| OB08 | Maintain exchange rates between currencies. |
| ME31K | Create an outline purchasing contract with a vendor. |
| BP | Maintain a Business Partner (including Vendor role) in SAP S/4HANA. |
Q: What field on the vendor master directly causes this error when it's missing?
The Order Currency field on the vendor's Purchasing Data view - without it, SAP has no currency to default onto a new purchasing document for that vendor.
Q: If the Purchasing Data view doesn't appear at all on a vendor master, where would you look?
The vendor's account group screen layout configuration (SPRO > Define Account Groups with Screen Layout for Vendors, or OBD2), since the view's visibility is controlled at that level, not on the individual vendor record.
Q: How does SAP S/4HANA's Business Partner model change how this error is fixed?
Instead of maintaining Purchasing Data via XK02 on a standalone vendor master, the fix is applied to the vendor role of a Business Partner via transaction BP, since S/4HANA unifies customer and vendor master data under the Business Partner concept.
Q: Why might a vendor legitimately have no Purchasing Data view at all?
If the vendor was created purely for a non-purchasing purpose - such as a one-time payment or reimbursement vendor - under an account group specifically designed to exclude purchasing fields, the Purchasing Data view is intentionally absent, not a data entry mistake.
"No currency assigned to vendor" almost always traces back to one of two things: the Order Currency field on the vendor's Purchasing Data view is simply blank, or the Purchasing Data view is missing entirely because the vendor's account group screen layout doesn't include it. Maintaining the order currency directly resolves the first case, while extending the vendor to a purchasing-relevant account group resolves the second. Keep this guide bookmarked the next time a new vendor unexpectedly blocks a contract or purchase order with this message.